c shell manual
C shell (oznaczany skrótem csh) – powłoka systemowa inspirowana językiem C, opracowana w początkach 1979 roku przez Billa Joya w University of Kansas. Jest jedną z najpopularniejszych alternatyw Bourne shell i była szeroko stosowana w systemach BSD oraz w początkowych wersjach Unix.
Historia
Powłoka C shell powstała jako reakcja na potrzebę bardziej przyjaznego języka skryptowego niż tradycyjny sh. Pierwsza wersja została udostępniona w 1979 roku i wkrótce stała się domyślną powłoką w systemach BSD. W 1990 roku wydano csh w wersji 5.6 w ramach 4.3BSD, wprowadzając takie elementy jak historię poleceń i aliasy.
Podstawowa składnia
Składnia C shell przypomina język C, co odróżnia ją od Bourne shell. Niektóre kluczowe elementy:
set variable = value– definiowanie zmiennychif (warunek) then … else … endif– struktura warunkowaforeach var (lista) … end– pętla iteracyjnaswitch (wyrażenie) … case … default … endsw– selektor wielokrotnego wyboru
Zmienne środowiskowe i aliasy
W C shell zmienne środowiskowe definiuje się przy pomocy setenv:
setenv PATH /usr/local/bin:$PATH
Aliasowanie poleceń odbywa się za pomocą alias:
alias ll 'ls -lF'
Historia poleceń
Jedną z najważniejszych funkcji C shell jest wbudowany mechanizm historii poleceń. Dzięki temu użytkownik może przeglądać i edytować poprzednie komendy przy pomocy klawiszy strzałek lub polecenia history. Historia jest przechowywana w pliku ~/.history (lub ~/.csh_history w niektórych implementacjach).
Skrypty C shell
Plik skryptowy C shell rozpoczyna się od lini #!/bin/csh (lub #!/bin/tcsh w wersji rozszerzonej tcsh). Przykładowy skrypt, który wyświetla listę plików i zapisuje ją do pliku:
#!/bin/csh
set dir = $HOME
echo "Zawartość katalogu $dir:"
ls -l $dir > katalog.txt
echo "Zapisano do katalog.txt"
Porównanie z innymi powłokami
| Cecha | csh | sh | ksh | bash |
|---|---|---|---|---|
| Składnia podobna do C | Tak | Nie | Częściowo | Częściowo |
| Historia poleceń | Wbudowana | Brak (do wersji 4) | Opcjonalna | Wbudowana |
| Aliasy | Tak | Nie | Tak | Tak |
| Obsługa tabulacji (tab‑completion) | W tcsh – tak | Nie | Nie | Tak |
Implementacje i dostępność
Podstawowa wersja csh jest dostępna w większości dystrybucji Linux oraz w systemach macOS (jako część pakietu csh). Rozszerzona wersja tcsh oferuje dodatkowe funkcje, takie jak podpowiedzi i bardziej rozbudowaną historię.
Przykładowe zastosowania
- Tworzenie prostych skryptów instalacyjnych w systemach BSD.
- Interaktywna praca w terminalu na starszych platformach Unix.
- Użycie jako powłoka domyślna w niektórych wersjach AIX.
Ograniczenia
Choć C shell wprowadził wiele użytecznych udogodnień, ma też pewne wady:
- Problemy z obsługą zmiennych tablicowych, co może prowadzić do nieoczekiwanych rezultatów.
- Brak pełnej zgodności z POSIX, co utrudnia przenoszenie skryptów między różnymi powłokami.
- W niektórych wersjach trudna diagnostyka błędów w skryptach.
Bibliografia i dalsza lektura
Więcej informacji można znaleźć w następujących pozycjach:
- C shell programming – obszerny podręcznik opisujący składnię i techniki.
- tcsh manual – dokumentacja rozszerzonej wersji
csh. - Unix philosophy – kontekst historyczny powłok systemowych.
Artykuł został opracowany na podstawie dostępnych źródeł do 2020 roku i jest częścią Encyklopedii Informatyki.